/**
 * Copying (c) Qixin Technoligies Co.,Ltd.2019-2029.all rights reserved.
 */

package com.example.service;

import lombok.extern.log4j.Log4j2;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;

import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * 2、发布/订阅
 *
 * 创  建   时  间： 2020/5/17
 * 版           本: V1.0
 * 作           者: qixin
 * 版  权   所  有: 版权所有(C)2019-2029
 * 公           司: 深圳市七智星科技有限公司
 */
@Log4j2
@Service
public class SubscriberService {

    @JmsListener(destination = "test.topic",containerFactory = "jmsContainerFactory")
    public void receiverMsg(final TextMessage text, Session session) throws JMSException {
        try {
            text.setJMSExpiration(System.currentTimeMillis()+60*60*1000); // 设置过期时间
            text.setIntProperty("level",1); // 设置一个属性
            log.info("收到消息 msg:{}", text.getText());
            text.acknowledge(); // 使用手动签收模式，需要手动的调用，如果不在catch中调用session.recover()消息只会在重启服务后重发
        }catch (JMSException e){
            session.recover(); // 此不可省略 重发信息使用
        }
    }
}
